package tpo.vista.empleados;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

import tpo.controlador.Sistema;
import tpo.to.ClienteDTO;

public class ModificacionCliente extends JFrame {
	
	private Sistema sistema;
	SimpleDateFormat dateFormatter = new SimpleDateFormat("dd/MM/yyyy");
	
	public ModificacionCliente(Sistema sistema){
		super("Modificacion Cliente");
		this.sistema = sistema;
		init();
		setVisible(true);
	}
	
	private void init(){
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		setLayout(new GridBagLayout());
		GridBagConstraints gc = new GridBagConstraints();
		
		List<ClienteDTO> clientesTO = sistema.getClientesDTO();

		JLabel labelCliente = new JLabel ("Cliente");
		JLabel labelNombre = new JLabel("Nombre");
		JLabel labelApellido = new JLabel("Apellido");
		JLabel labelDomicilio = new JLabel("Domicilio");
		JLabel labelTelefono = new JLabel("Telefono");
		JLabel labelDNI = new JLabel("DNI");
		JLabel labelSexo = new JLabel("Sexo");
		JLabel labelNacionalidad = new JLabel("Nacionalidad");
		JLabel labelUsuario = new JLabel("Usuario");
		JLabel labelPassword = new JLabel("Password");
		JLabel labelFechaNacimiento = new JLabel("Fecha Nacimiento (dd/mm/yyyy)");
		final JComboBox clientesCombo = new JComboBox(clientesTO.toArray());
		final JTextField fieldNombre = new JTextField("");
		final JTextField fieldApellido = new JTextField("");
		final JTextField fieldDomicilio = new JTextField("");
		final JTextField fieldTelefono = new JTextField("");
		final JTextField fieldDNI = new JTextField("");
		final JTextField fieldSexo = new JTextField("");
		final JTextField fieldNacionalidad = new JTextField("");
		final JTextField fieldUsuario = new JTextField("");
		final JTextField fieldPassword = new JTextField("");
		final JTextField fieldFechaNacimiento = new JTextField("");
		JButton button = new JButton("Guardar");
		
		clientesCombo.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				JComboBox cb = (JComboBox) e.getSource();
		        ClienteDTO c = (ClienteDTO) cb.getSelectedItem();
		        fieldNombre.setText(c.getNombre());
		        fieldApellido.setText(c.getApellido());
				fieldDomicilio.setText(c.getDomicilio());
				fieldTelefono.setText(c.getTelefono());
				fieldDNI.setText(c.getDni());
				fieldSexo.setText(c.getSexo());
				fieldNacionalidad.setText(c.getNacionalidad());
				String fechaNacimiento = dateFormatter.format(c.getFechaNacimiento());
				fieldFechaNacimiento.setText(fechaNacimiento);
			}
		});
		
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evento) {
				try {
			        ClienteDTO c = (ClienteDTO) clientesCombo.getSelectedItem();
			        Date fechaNacimiento = dateFormatter.parse(fieldFechaNacimiento.getText());
					sistema.modificarCliente(c.getCodigo(), fieldNombre.getText(),
							fieldApellido.getText(), fechaNacimiento,
							fieldDomicilio.getText(), fieldTelefono.getText(),
							fieldDNI.getText(), fieldSexo.getText(),
							fieldNacionalidad.getText(), fieldUsuario.getText(),
							fieldPassword.getText());
					dispose();
					System.out.println("Los datos fueron modificados");
				} catch (Exception e) {
					System.out.println("Error al modificar cliente");
				}
			}
		});
		
		gc.gridx = 0;	// Columna
		gc.gridy = 0;	// Fila
		add(labelCliente, gc);		
		gc.gridx = 1;
		gc.gridy = 0;
		add(clientesCombo, gc);
		
		gc.gridx = 0;	// Columna
		gc.gridy = 1;	// Fila
		add(labelNombre, gc);		
		gc.gridx = 1;
		gc.gridy = 1;
		fieldNombre.setColumns(10);
		add(fieldNombre, gc);
		
		gc.gridx = 0;
		gc.gridy = 2;
		add(labelApellido, gc);		
		gc.gridx = 1;
		gc.gridy = 2;
		fieldApellido.setColumns(10);
		add(fieldApellido, gc);
		
		gc.gridx = 0;
		gc.gridy = 3;
		add(labelDomicilio, gc);		
		gc.gridx = 1;
		gc.gridy = 3;
		fieldDomicilio.setColumns(10);
		add(fieldDomicilio, gc);
		
		gc.gridx = 0;
		gc.gridy = 4;
		add(labelTelefono, gc);		
		gc.gridx = 1;
		gc.gridy = 4;
		fieldTelefono.setColumns(10);
		add(fieldTelefono, gc);
		
		gc.gridx = 0;
		gc.gridy = 5;
		add(labelDNI, gc);		
		gc.gridx = 1;
		gc.gridy = 5;
		fieldDNI.setColumns(10);
		add(fieldDNI, gc);
		
		gc.gridx = 0;
		gc.gridy = 6;
		add(labelSexo, gc);		
		gc.gridx = 1;
		gc.gridy = 6;
		fieldSexo.setColumns(10);
		add(fieldSexo, gc);
		
		gc.gridx = 0;
		gc.gridy = 7;
		add(labelNacionalidad, gc);		
		gc.gridx = 1;
		gc.gridy = 7;
		fieldNacionalidad.setColumns(10);
		add(fieldNacionalidad, gc);
		
		gc.gridx = 0;
		gc.gridy = 8;
		add(labelUsuario, gc);		
		gc.gridx = 1;
		gc.gridy = 8;
		fieldUsuario.setColumns(10);
		add(fieldUsuario, gc);
		
		gc.gridx = 0;
		gc.gridy = 9;
		add(labelPassword, gc);
		gc.gridx = 1;
		gc.gridy = 9;
		fieldPassword.setColumns(10);
		add(fieldPassword, gc);
		
		gc.gridx = 0;
		gc.gridy = 10;
		add(labelFechaNacimiento, gc);
		gc.gridx = 1;
		gc.gridy = 10;
		fieldFechaNacimiento.setColumns(10);
		add(fieldFechaNacimiento, gc);
		
		gc.gridx = 0;
		gc.gridy = 11;
		add(button, gc);
		
		if(!clientesTO.isEmpty()) {
			ClienteDTO c = (ClienteDTO) clientesCombo.getSelectedItem();
			fieldNombre.setText(c.getNombre());
			fieldApellido.setText(c.getApellido());
			fieldDomicilio.setText(c.getDomicilio());
			fieldTelefono.setText(c.getTelefono());
			fieldDNI.setText(c.getDni());
			fieldSexo.setText(c.getSexo());
			fieldNacionalidad.setText(c.getNacionalidad());
			fieldUsuario.setText(c.getUsuario());
			fieldPassword.setText(c.getPassword());
			fieldFechaNacimiento.setText(dateFormatter.format(c.getFechaNacimiento()));
		} else {
			fieldNombre.setEnabled(false);
			fieldApellido.setEnabled(false);
			fieldDomicilio.setEnabled(false);
			fieldTelefono.setEnabled(false);
			fieldDNI.setEnabled(false);
			fieldSexo.setEnabled(false);
			fieldNacionalidad.setEnabled(false);
			fieldUsuario.setEnabled(false);
			fieldPassword.setEnabled(false);
			fieldFechaNacimiento.setEnabled(false);
			button.setEnabled(false);
		}

		pack();
		setSize(400, 300);
	}
}

